/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: Lenovo
 * Date: 2025-03-25
 * Time: 13:31
 */
//接口定义
public interface CoffeeMaker {
    // 默认方法：制作美式咖啡（用户直接调用）
    default void makeAmericano() {
        grindBeans();    // 调用静态私有方法：磨豆
        heatWater();     // 调用实例私有方法：加热水
        System.out.println("美式咖啡制作完成");
    }

    // 默认方法：制作卡布奇诺（用户直接调用）
    default void makeCappuccino() {
        grindBeans();    // 调用静态私有方法：磨豆
        heatWater();     // 调用实例私有方法：加热水
        System.out.println("再加入奶泡，卡布奇诺制作完成");
    }

    //静态私有方法：磨咖啡豆（用户看不到）
    //属于接口本身的静态方法。
    //仅限接口内部调用，实现类无法访问。
    //可以被接口内的其他静态方法或默认方法调用。
    //当然这里只是演示私有方法可以是静态方法但是问题：grindBeans() 是静态方法，无法访问接口的实例成员（如实例变量）。
    //若磨豆逻辑需要依赖实例状态（如咖啡豆类型），应使用实例私有方法。
    private static void grindBeans() {
        System.out.println("磨咖啡豆...");
    }

    // 实例私有方法：加热水（用户看不到）
    //仅限接口内部调用，实现类无法访问。
    //只能被接口内的默认方法或实例方法调用。
    private void heatWater() {
        System.out.println("加热水...");
    }
}
